
namespace ShoppingCart.Business.Entity
{
	using System;
    using Collections;

	/// <summary>
	/// Represents a Pedido in the database.
	/// </summary>
	[Serializable]
	public class Pedido : BaseEntity
	{
		/// <summary>
		/// Gets or sets the IdPedido value.
		/// </summary>
		public int IdPedido { get; set; }

		/// <summary>
		/// Gets or sets the Fecha value.
		/// </summary>
		public DateTime Fecha { get; set; }

		/// <summary>
		/// Gets or sets the NroOperacion value.
		/// </summary>
		public string NroOperacion { get; set; }

		/// <summary>
		/// Gets or sets the FechaOperacion value.
		/// </summary>
		public DateTime FechaOperacion { get; set; }

		/// <summary>
		/// Gets or sets the Descripcion value.
		/// </summary>
		public string Descripcion { get; set; }

		/// <summary>
		/// Gets or sets the Estado value.
		/// </summary>
		public byte Estado { get; set; }

        public string NombreEstado
        {
            get { return Enum.GetName(typeof(Enums.Estado), Estado); }
        }

        public byte Documento { get; set; }

        public string NombreDocumento 
        {
            get { return Enum.GetName(typeof(Enums.Documento), Documento); }
        }

        public string Autorizador { get; set; }

		/// <summary>
		/// Gets or sets the Cliente value.
		/// </summary>
		public Cliente Cliente { get; set; }

		/// <summary>
		/// Gets or sets the Departamento value.
		/// </summary>
		public Departamento Departamento { get; set; }

        public Cuenta Cuenta { get; set; }

        public Banco Banco { get { return Cuenta != null ? Cuenta.Banco : null; } }

        public DetallePedidoCollection Detalle { get; set; }

        public Envio Envio { get; set; }

        public override string ToString()
        {
            return IdPedido.ToString().PadLeft(5, '0');
        }
	}
}
